/*
 * Copyright (c) 2014-2021 Contributors to the Eclipse Foundation
 * 
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 * 
 * SPDX-License-Identifier: EPL-2.0
*/

/*
 * Note: this header file provides Store Event MIB definitions for MessageSight,
 *       as well as the interface to send Store Event traps. 
 */

#ifndef _IMASNMPSTOREEVENTMIB_H_
#define _IMASNMPSTOREEVENTMIB_H_

#define IMA_SNMP_STORE_EVENT_OID 3
#define IMA_SNMP_STORE_EVENT_MIB IMA_SNMP_NOTIFICATIONS_MIB, IMA_SNMP_STORE_EVENT_OID 

#define IMA_SNMP_STORE_EVENT_ELEMENTS_OID 1
#define IMA_SNMP_STORE_EVENT_ELEMENTS_MIB IMA_SNMP_STORE_EVENT_MIB, IMA_SNMP_STORE_EVENT_ELEMENTS_OID

#define IMA_SNMP_TRAP_STORE_DISKUSEDPCT_OID 1
#define IMA_SNMP_TRAP_STORE_DISKUSEDPCT_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_DISKUSEDPCT_OID

#define IMA_SNMP_TRAP_STORE_DISKFREEBYTES_OID 2
#define IMA_SNMP_TRAP_STORE_DISKFREEBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_DISKFREEBYTES_OID

#define IMA_SNMP_TRAP_STORE_MEMUSEDPCT_OID 3
#define IMA_SNMP_TRAP_STORE_MEMUSEDPCT_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_MEMUSEDPCT_OID

#define IMA_SNMP_TRAP_STORE_MEMTOTALBYTES_OID 4
#define IMA_SNMP_TRAP_STORE_MEMTOTALBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_MEMTOTALBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL1TOTALBYTES_OID 5
#define IMA_SNMP_TRAP_STORE_POOL1TOTALBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL1TOTALBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL1USEDBYTES_OID 6
#define IMA_SNMP_TRAP_STORE_POOL1USEDBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL1USEDBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL1USEDPERCENT_OID 7
#define IMA_SNMP_TRAP_STORE_POOL1USEDPERCENT_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL1USEDPERCENT_OID

#define IMA_SNMP_TRAP_STORE_POOL1RECORDSLIMITBYTES_OID 8
#define IMA_SNMP_TRAP_STORE_POOL1RECORDSLIMITBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL1RECORDSLIMITBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL1RECORDSUSEDBYTES_OID 9
#define IMA_SNMP_TRAP_STORE_POOL1RECORDSUSEDBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL1RECORDSUSEDBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL2TOTALBYTES_OID 10
#define IMA_SNMP_TRAP_STORE_POOL2TOTALBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL2TOTALBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL2USEDBYTES_OID 11
#define IMA_SNMP_TRAP_STORE_POOL2USEDBYTES_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL2USEDBYTES_OID

#define IMA_SNMP_TRAP_STORE_POOL2USEDPERCENT_OID 12
#define IMA_SNMP_TRAP_STORE_POOL2USEDPERCENT_MIB IMA_SNMP_STORE_EVENT_ELEMENTS_MIB, IMA_SNMP_TRAP_STORE_POOL2USEDPERCENT_OID


#define IMA_SNMP_STORE_EVENT_DEFS_OID 2
#define IMA_SNMP_STORE_EVENT_DEFS_MIB IMA_SNMP_STORE_EVENT_MIB, IMA_SNMP_STORE_EVENT_DEFS_OID

#define IMA_SNMP_STORE_DISK_USAGE_WARN_OID 1
#define IMA_SNMP_STORE_DISK_USAGE_WARN_MIB IMA_SNMP_STORE_EVENT_DEFS_MIB, IMA_SNMP_STORE_DISK_USAGE_WARN_OID

#define IMA_SNMP_STORE_DISK_USAGE_ALERT_OID 2
#define IMA_SNMP_STORE_DISK_USAGE_ALERT_MIB IMA_SNMP_STORE_EVENT_DEFS_MIB, IMA_SNMP_STORE_DISK_USAGE_ALERT_OID

#define IMA_SNMP_TRAP_STORE_POOL1_MEM_LOW_ALERT_OID 3
#define IMA_SNMP_TRAP_STORE_POOL1_MEM_LOW_ALERT_MIB IMA_SNMP_STORE_EVENT_DEFS_MIB, IMA_SNMP_TRAP_STORE_POOL1_MEM_LOW_ALERT_OID

#define IMA_SNMP_STORE_EVENT_CTRL_OID 3
#define IMA_SNMP_STORE_EVENT_CTRL_MIB IMA_SNMP_STORE_EVENT_MIB, IMA_SNMP_STORE_EVENT_CTRL_OID

#define IMA_SNMP_STORE_DISK_USAGE_WARN_EN_OID 1
#define IMA_SNMP_STORE_DISK_USAGE_WARN_EN_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_DISK_USAGE_WARN_EN_OID

#define IMA_SNMP_STORE_DISK_USAGE_WARN_TH_OID 2
#define IMA_SNMP_STORE_DISK_USAGE_WARN_TH_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_DISK_USAGE_WARN_TH_OID

#define IMA_SNMP_STORE_DISK_USAGE_ALERT_EN_OID 3
#define IMA_SNMP_STORE_DISK_USAGE_ALERT_EN_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_DISK_USAGE_ALERT_EN_OID

#define IMA_SNMP_STORE_DISK_USAGE_ALERT_TH_OID 4
#define IMA_SNMP_STORE_DISK_USAGE_ALERT_TH_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_DISK_USAGE_ALERT_TH_OID

#define IMA_SNMP_STORE_DISK_USAGE_WARN_DURN_OID 5
#define IMA_SNMP_STORE_DISK_USAGE_WARN_DURN_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_DISK_USAGE_WARN_DURN_OID

#define IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_EN_OID 6
#define IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_EN_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_EN_OID

#define IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_TH_OID 7
#define IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_TH_MIB IMA_SNMP_STORE_EVENT_CTRL_MIB, IMA_SNMP_STORE_POOL1_MEM_LOW_ALERT_TH_OID

typedef enum {
    imaSnmpStoreEvent_NONE                     = 0,
    imaSnmpStoreEvent_DISK_USED_PERCENT               = 1,    //StoreDiskUsedPercent
    imaSnmpStoreEvent_DISK_FREE_BYTES             = 2,    //StoreDiskFreeBytes
    imaSnmpStoreEvent_MEMORY_USED_PERCENT     = 3,    //StoreMemoryUsedPercent
    imaSnmpStoreEvent_MEMORY_TOTAL_BYTES  =4,
    imaSnmpStoreEvent_POOL1_TOTAL_BYTES  =5,
    imaSnmpStoreEvent_POOL1_USED_BYTES   =6,
    imaSnmpStoreEvent_POOL1_USED_PERCENT   =7,
    imaSnmpStoreEvent_POOL1_RECORDS_LIMITBYTES =8,
    imaSnmpStoreEvent_POOL1_RECORDS_USEDBYTES   =9,
    imaSnmpStoreEvent_POOL2_TOTAL_BYTES  =10,
    imaSnmpStoreEvent_POOL2_USED_BYTES =11,
    imaSnmpStoreEvent_POOL2_USED_PERCENT=12,
    imaSnmpStoreEvent_MAX,

} imaSnmpStoreEventDataType_t;

#define imaSnmpStoreEvent_MIN  imaSnmpStoreEvent_DISK_USED_PERCENT

/* function declarations */
#ifdef __cplusplus
    extern "C" {
#endif

int 	ima_snmp_init_store_event_mibs();
void 	ima_snmp_reinit_store_event_mibs();

#ifdef __cplusplus
    }
#endif

#endif /* _IMASNMPSTOREEVENTMIB_H_ */

